/* Copyright (c) 2010 OFXKit
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#import <Foundation/Foundation.h>
#import "OFXObject.h"

@interface OFXMultiFactorAuthentication : OFXObject {
  NSString* certificateId;
  NSData* nonce;
  NSString* phraseAnswer;
  NSString* phraseId;
  NSString* phraseLabel;
  bool stage1;  
}

/**
 * @property certificateId
 * @brief Optional server certificate ID. A-64
 */
@property(retain) NSString* certificateId;

/**
 * @property nonce
 * @brief Server-generated random data. A-16
 */
@property(retain) NSData* nonce;

/**
 * @property phraseAnswer
 * @brief User’s answer to the challenge question, A-64
 */
@property(retain) NSString* phraseAnswer;

/**
 * @property phraseId
 * @brief Identifier for the challenge question. 
 *
 * The <MFAPHRASEID> tag uniquely identifies a challenge question. In addition 
 * to providing a way to correlate the answers to challenge questions with the 
 * questions themselves, it also provides the OFX client additional options for
 * collecting the answer from the user. 
 *
 * Common values:
 * - MFA1: City of birth
 * - MFA2: Date of birth, formatted MM/DD/YYYY
 * - MFA3: Debit card number
 * - MFA4: Father's middle name
 * - MFA5: Favorite color
 * - MFA6: First pet's name
 * - MFA7: Five digit ZIP code
 * - MFA8: Grandmother’s maiden name on your father’s side
 * - MFA9: Grandmother’s maiden name on your mother’s side
 * - MFA10: Last four digits of your cell phone number
 * - MFA11: Last four digits of your daytime phone number
 * - MFA12: Last four digits of your home phone number
 * - MFA13: Last four digits of your social sescurity number
 * - MFA14: Last four digits of your tax ID
 * - MFA15: Month of birth of youngest sibling, do not abbreviate
 * - MFA16: Mother’s maiden name
 * - MFA17: Mother’s middle name
 * - MFA18: Name of the company where you had your first job
 * - MFA19: Name of the manufacturer of your first car
 * - MFA20: Name of the street you grew up on
 * - MFA21: Name of your high school football team, do not include high school 
 * name, e.g. "Beavers" rather than "Central High Beavers"
 * - MFA22: Recent deposit or recent withdrawal amount
 * - MFA23: Year of birth, formatted YYYY
 * - MFA24
 * - MFA25
 * - MFA26
 * - MFA27
 * - MFA28
 * - MFA29
 * - MFA30
 * - MFA101: Datetime, formatted YYYYMMDDHHMMSS
 * - MFA102: Host name
 * - MFA103: IP Address
 * - MFA104: MAC Address
 * - MFA105: Operating System version
 * - MFA106: Processor architecture, e.g. I386
 * - MFA107: UserAgent
 * - MFA108
 * - MFA109
 * - MFA110
 */
@property(retain) NSString* phraseId;

/**
 * @property phraseLabel
 * @brief The textual challenge question. This should be as appropriate as 
 * possible for display to the user. A-64
 */
@property(retain) NSString* phraseLabel;

/**
 * @property stage1
 * @brief Indicates if this is stage1 of multi-factor authentication.
 */
@property(assign) bool stage1;

@end
